import { defineConfig, loadEnv } from 'vite'
import path from 'path'
// vite插件
import createVitePlugins from './vite/plugins'
// 样式单位转换px转rem
import postCssPxToRem from "postcss-pxtorem"

// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd())
  const { VITE_APP_BASE_API, VITE_APP_BASE, VITE_APP_URL, VITE_APP_PORT } = env
  console.log(env)
  return {
    // 部署生产环境和开发环境下的URL。
    // 默认情况下，vite 会假设你的应用是被部署在一个域名的根路径上
    // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上，你就需要用这个选项指定这个子路径。例如，如果你的应用被部署在 https://www.ruoyi.vip/admin/，则设置 baseUrl 为 /admin/。
    base: VITE_APP_BASE,
    plugins: createVitePlugins(env, command === 'build'),
    //为了超图的编译添加以下配置
    define: {
      'process.env': {},
    },
    resolve: {
      // https://cn.vitejs.dev/config/#resolve-alias
      alias: {
        // 设置路径
        '~': path.resolve(__dirname, './'),
        // 设置别名
        '@': path.resolve(__dirname, './src')
      },
      // https://cn.vitejs.dev/config/#resolve-extensions
      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
    },
    // vite 相关配置
    server: {
      port: VITE_APP_PORT,
      host: true,
      hmr: true,
      open: true,
      proxy: {
        [VITE_APP_BASE_API]: {
          target: VITE_APP_URL,
          changeOrigin: true,
          // pathRewrite: path => path.replace(new RegExp(`^${VITE_APP_BASE_API}`), '')
          pathRewrite: {
            [`^${VITE_APP_BASE_API}`]: ""
          }
        }
      }
    },
    build: {
      minify: "terser",
      terserOptions: {
        compress: {
          drop_console: true,
          drop_debugger: true,
        }
      }
    },
    //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
    css: {
      postcss: {
        plugins: [
          // pxToRem配置
          postCssPxToRem({
            rootValue: 192, // 设计稿宽度的1/ 10
			      propList: ["*", "!border"], // 除 border 外所有px 转 rem
			      // selectorBlackList: [".el-"] // 过滤掉.el-开头的class，不进行rem转换
          })
          // 初始配置
          // {
          //   postcssPlugin: 'internal:charset-removal',
          //   AtRule: {
          //     charset: (atRule) => {
          //       if (atRule.name === 'charset') {
          //         atRule.remove();
          //       }
          //     }
          //   }
          // }
        ]
      }
    }
  }
})

